/*
 * @Author: hucc
 * @Date: 2021-09-26 10:27:15
 * @LastEditors: hucc
 * @LastEditTime: 2021-09-26 15:40:10
 * @Description: 
 */

//Object.is判断两个值是否相等 和===区别
// console.log(1 === 1); //true
// console.log(Object.is(1, 1)); //true
// console.log(+0 === -0); //true
// console.log(Object.is(+0, -0)); //false
// console.log(NaN === NaN); //false
// console.log(Object.is(NaN, NaN)); //true

//Object.assign()深复制和合并对象
let obj1 = {}
let obj2 = {
    name: "zs",
    age: 12
}
let obj3 = {
        name: "lisi",
        gender: "male"
    }
    // Object.assign(obj1, obj2)//第一个参数是目标对象 第二个是要复制的内容 返回的是第一个参数
    // console.log(obj1);//{ name: 'zs', age: 12 }
    // console.log(obj1 === obj2);//false

//将obj3,obj2合并复制给obj1 返回值是第一个参数
//let result= Object.assign(obj1, obj2, obj3);
// console.log(obj1);//{ name: 'lisi', age: 12, gender: 'male' }
//console.log(result===obj1)//true

//Object.setPrototypeOf() 为目标对象设置原型 两个参数 第一个参数是目标对象 第二个参数是原型
Object.setPrototypeOf(obj1, obj2);
//Object.getPrototypeOf()获取目标对象原型
console.log(obj1.__proto__); //{ name: 'zs', age: 12 }
console.log(obj1.constructor.prototype); //[Object: null prototype] {}
console.log(Object.getPrototypeOf(obj1)); //{ name: 'zs', age: 12 }